#include<iostream>
using namespace std;

/**
 * static对变量的影响
 * 先看结论：
 *      1、全局变量相关
 *          static修饰位于全局变量（比如文件中的全局变量）则等于限定了此变量的作用域在此文件内部，其他c文件无法访问此变量
 *          全局变量在其他c文件要访问，可以在其他文件中通过extend引用，指明此变量已经在其他c文件中声明了
 *      2、局部变量
 *          static修饰局部变量，等于延长了局部变量的声明周期和存储的内存区域，本来全局变量是在栈中分配的，函数结束变量出栈就释放了，
 *          但是被static修饰的局部变量他的存储是位于全局区域，他会一直存在，直到程序结束才会被释放。
 *          而且他只会被初始化一次。      
 * */

int main() {
    
    //extern指明了a在其他文件中已经声明，这样的a在整个工程文件中就只能有一份，不能在不同文件中重复声明
    extern int a;

    cout << a << endl;
    return 0;
}
/**
 * $ ./test
*/
